#ifndef MAIN_ST7789_H_
#define MAIN_ST7789_H_

#include "driver/spi_master.h"


#define ST7789_DIRECT_MODE		0	// Режим прямого обращения к дисплею (без буфера кадра)
#define ST7789_BUFFER_MODE		1	// Режим внесения изменений в буфер кадра для последующей загрузки в дисплей

#define ST7789_MODE			ST7789_BUFFER_MODE

#define PIN_MISO 	-1
#define PIN_MOSI 	23
#define PIN_CLK  	18
#define PIN_CS   	19
#define PIN_DC   	2
#define PIN_RST  	4
#define PIN_BL		5	// Управление подсветкой

#define ST7789_TFTWIDTH   240      ///< ST7789 max TFT width
#define ST7789_TFTHEIGHT  280      ///< ST7789 max TFT height

#define ST7789_X_Start          20
#define ST7789_Y_Start          0

#define DIRECTION0		0
#define DIRECTION90		1
#define DIRECTION180		2
#define DIRECTION270		3

// Процедура инициализации дисплея
void st7789_init(uint16_t width, uint16_t height);
void st7789_DisplayOff(void);
// Процедура управления подсветкой
void st7789_SetBL(uint8_t value);
// Процедура окрашивает 1 пиксель дисплея
void st7789_DrawPixel(int16_t x, int16_t y, uint16_t color);
// Процедура возвращает цвет пикселя
uint16_t st7789_GetPixel(int16_t x, int16_t y);
// Процедура заполнения прямоугольника цветом color
void st7789_FillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color);

#if (ST7789_MODE == ST7789_BUFFER_MODE)
// Процедура обновляет дисплей из буфера кадра
void st7789_update(void);
// Процедура копирует буфер кадра в буфер pBuff
void st7789_getScreenData(uint16_t *pBuff);
#endif

#endif /* MAIN_ST7789_H_ */
